package com.note.feng.leetcode.algorithms.easy;

public class HundredSeventyOne {

    /**
     * 171 Excel表列序号
     * 给你一个字符串 columnTitle ，表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
     *
     * 例如：
     *
     * A -> 1
     * B -> 2
     * C -> 3
     * ...
     * Z -> 26
     * AA -> 27
     * AB -> 28
     * ...
     *
     * 示例 1:
     *
     * 输入: columnTitle = "A"
     * 输出: 1
     * 示例 2:
     *
     * 输入: columnTitle = "AB"
     * 输出: 28
     * 示例 3:
     *
     * 输入: columnTitle = "ZY"
     * 输出: 701
     *
     * 提示：
     *
     * 1 <= columnTitle.length <= 7
     * columnTitle 仅由大写英文组成
     * columnTitle 在范围 ["A", "FXSHRXW"] 内
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode.cn/problems/excel-sheet-column-number
     */
    /**
     *解法：
     * 26进制：
     * 1.每个字符对应的数字：ch - 'A‘ + 1，因为 A=1，A-A = 0,所有需要 +1
     * 2.每遍历一个字符，都有 * 26 + 当前字符对应的数字
     *
     * 可以以10进制的推算获取公式，再换成26进制即可
     *
     * @param columnTitle
     * @return
     */
    public int titleToNumber(String columnTitle) {
        int res = 0;
        char [] chars = columnTitle.toCharArray();
        for(char ch : chars){
            res = res * 26 + ch - 'A' + 1;
        }
        return  res;
    }
}
